const express = require('express')
const router = express.Router()
const svgCaptcha = require('svg-captcha')

// 处理上传文件
// 增加中间件 npm i multer 
const multer = require('multer')
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + new Date().getFullYear() + (new Date().getMonth() + 1) + new Date().getDate() + '-' + Date.now() + '-' + file.originalname.match('\.*'));
  }
})

var upload = multer({ storage: storage })
router.post('/upload', upload.single('file'), async (req, res) => {
  console.log('req.body', req.body)
  // upload.singel('file) 接收单一文件，文件名为file
  console.log(req.file) // 是通过multer中间件增加的req.files对象
  const file = req.file
  file.url = `http://localhost:3000/uploads/${file.filename}`
  console.log(typeof file)
  res.status(200).json({ code: 200, data: file.url })  // 返回前段需要定义一个静态的文件并把路径返回给前端
})

// 1-19 用户输入手机号，触发获取短信验证
router.get('/sendmsg', async (req, res) => {
  console.log(req.query)
  console.log(req.body)
  //如果没有id字段,返回404
  if (req.query.phoneNumber == undefined || req.query.phoneNumber == '') {
    res.status(404).json({ message: "请输入手机信息" });
    return;
  }
  // console.log(item)
  // //2. 处理数据
  // //生成随机验证码(6位随机数)待用
  // let code = sms_util.randomCode(6)
  // //发送给指定的手机号
  // console.log(`向${phone}发送验证码短信: ${code}`)
  // sms_util.sendCode(phone, code, function (success) { //success表示是否成功
  //   if (success) {
  //     // users[phone] = code
  //     // console.log(users[phone])
  //     console.log('保存验证码: ', phone, code)
  //     res.send({ "code": 20000, data: '验证码已发出' })
  //   } else {
  //     //3. 返回响应数据
  //     res.send({ "code": 1, msg: '短信验证码发送失败' })
  //   }
  // })
  console.log('验证码已发出');

  // 如果有用户，通过短信api发送短信，并接收返回值code，存储在session中，用于登录时验证。
  //返回结果
  res.json({ code: 200, message: '验证码已发出' });
})


// 1-15验证码获取接口，将验证码存储在session中，并将生成的验证码返回给前端
router.get('/captcha', async (req, res) => {

  let captcha = svgCaptcha.create({
    size: 4,  //验证码长度
    width: 100, //svg宽度
    height: 50, //svg高度
    // background: "#eee",//svg背景色
    noise: 2, //干扰线条数
    fontSize: 35, //字体大小
    ignoreChars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxz',   //验证码字符中排除
    color: false // 验证码的字符是否有颜色，默认没有，如果设定了背景，则默认有 
  })
  // 保存到session,忽略大小写
  req.session.captcha = captcha.text.toLowerCase();
  console.log(req.session.captcha, req.session)
  res.type('svg')
  // res.status(200).send(
  //   captcha.data
  // );
  res.status(200).send({
    code: 200,
    result: captcha.data
  });
})
// 用户登录带验证码
router.post('/login', async (req, res) => {
  // 1-20 新增登录类型和手机验证码判断
  console.log(req.body)
  let { loadType } = req.body
  if (loadType === 'phone') {
    //如果没有id字段,返回404
    if (req.body.UserPhone == undefined || req.params.UserPhone == '' || req.body.phoneVerityCode == undefined || req.params.phoneVerityCode == '') {
      res.status(404).json({ message: "请输入登录" });
      return;
    }
    if (req.body.phoneVerityCode !== req.session.phoneVerityCode) {
      res.status(404).json({ message: "请输入登录" });
      return;
    }

    //先查找,再调用删除,最后返回首页
    req.Model = require(`../models/User`)
    const item = await req.Model.findOne({
      where: {
        UserPhone: req.body.UserPhone
      }
    })
    // console.log(item)
    if (!item) {
      res.status(404).json({ message: "用户不存在" });
      return;
    }
    console.log('登录成功');
    //返回结果
    res.json({ code: 200, message: 'success' });
  } else if (loadType === 'username') {
    //如果没有id字段,返回404
    if (req.body.UserName == undefined || req.params.UserName == '' || req.body.UserPassword == undefined || req.params.UserPassword == '') {
      res.status(404).json({ message: "请输入登录" });
      return;
    }
    // 后台验证验证码输入是否正确

    let captcha = req.body.vcode
    console.log(captcha, req.session, 'sessionCaptcha')
    const sessionCaptcha = req.session.captcha ? req.session.captcha.toLowerCase() : ''

    if (!sessionCaptcha || sessionCaptcha != captcha) {
      let error = '验证码不正确'
      res.send({
        code: 500,
        error: error
      })
      return
    }
    // 后台验证验证码输入是否正确 结束
    //先查找,再调用删除,最后返回首页
    req.Model = require(`../models/User`)
    const item = await req.Model.findOne({
      where: {
        UserName: req.body.UserName, UserPassword: req.body.UserPassword
      }
    })
    console.log('item', item)
    if (!item) {
      res.status(404).json({ message: "用户不存在" });
      return;
    }
    console.log('登录成功');
    //返回结果
    res.json({ code: 200, data: { 'UserName': item.dataValues.UserName, 'token': '23234234' }, message: 'success' });
  } else {
    res.status(404).json({ code: 404, message: '登录类型错误' });
  }

})
// // 用户登录不带验证码
// router.post('/login', async (req, res) => {
//   console.log(req.body)
//   //如果没有id字段,返回404
//   if (req.body.UserName == undefined || req.params.UserName == '' || req.body.UserPassword == undefined || req.params.UserPassword == '') {
//     res.status(404).json({ message: "请输入登录" });
//     return;
//   }
//   //先查找,再调用删除,最后返回首页
//   req.Model = require(`../models/User`)
//   const item = await req.Model.findOne({
//     where: {
//       UserName: req.body.UserName, UserPassword: req.body.UserPassword
//     }
//   })
//   // console.log(item)
//   if (!item) {
//     res.status(404).json({ message: "用户不存在" });
//     return;
//   }
//   console.log('登录成功');
//   //返回结果
//   res.json({ code: 200, message: 'success' });
// })

// // 用户登录直接sql查询
// router.get('/login', (req, res) => {
//   // let { username, password } = req.body
//   console.log(req)
//   let { UserName, UserPassword } = { UserName: 'admin', UserPassword: '123456' }
//   // let sqlStr = `SELECT COUNT(*) checkNum FROM tblusers WHERE UserName = "${UserName}" AND UserPassword = "${UserPassword}"`
//   let sqlStr = `SELECT COUNT(*) checkNum FROM tblusers WHERE UserName = ? AND UserPassword = ?`
//   // console.log(UserName, UserPassword, sqlStr)
//   let conn = new DBHelper().getConn()
//   conn.query(sqlStr, [UserName, UserPassword], (err, result) => {
//     if (err) {
//       res.json(err)
//     } else {
//       console.log(result)
//       let checkNum = result[0].checkNum;
//       // res.json(result)
//       console.log('结果为: ', result[0].checkNum);
//       if (checkNum == 0) {
//         console.log('账号或密码不正确');
//         res.send('账号或密码不正确');
//       } else {
//         console.log('登录成功');
//         //返回结果
//         res.json({ code: 0, message: 'success' });
//       }
//     }
//   })
//   conn.end()
// })
// // 增加用户
// router.post('/addUser', (req, res) => {
//   let sqlStr = sql.user.add
//   let params = req.body
//   let conn = new DBHelper().getConn()
//   conn.query(sqlStr, [params.name, params.age], (err, result) => {
//     if (err) {
//       res.json(err)
//     } else {
//       res.json(result)
//     }
//   })
//   conn.end()
// })
// // 查询所有用户
// router.get('/users', (req, res) => {

//   let sqlStr = sql.user.users
//   let params = req.body
//   let conn = new DBHelper().getConn()
//   conn.query(sqlStr, [params.username, params.password], (err, result) => {
//     if (err) {
//       res.json(err)
//     } else {
//       res.json(result)
//     }
//   })
//   conn.end()
// })
// // 查询用户
// router.post('/selectUser', (req, res) => {
//   console.log('1111')
//   let sqlStr = sql.user.select
//   let params = req.body
//   let conn = new DBHelper().getConn()
//   conn.query(sqlStr, [params.name], (err, result) => {
//     if (err) {
//       res.json(err + '1111')
//     } else {
//       console.log(result)
//       res.json(result)
//     }
//   })
//   conn.end()
// })

module.exports = router